﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ProyectoVuelos.Entidades;
using MySql.Data.MySqlClient;
using System.Data;
using ProyectoVuelos.Acceso_a_Datos.Conexion;


namespace ProyectoVuelos.Acceso_a_Datos.Mysql
{
    public class MySQLConsultaVuelo
    {
        public MySQLConsultaVuelo()
        {

        }
        #region consulta basica de vuelos
        // mostrar vuelos si se selecciono solo fecha de salida, es decir el vuelo no tiene retorno solo ida
        public List<Vuelo> MostrarListaVuelosIda(string fechaS, int origen, int destino)
        {

            {
                DateTime fechaSa = Convert.ToDateTime(fechaS);
                //DateTime fechaRe = Convert.ToDateTime(fechaL);

                // instancio un objeto conexion y otro Sqlcommand para la BD
                ConexionMySQL conex = new ConexionMySQL();
                conex.abrirConexion();
                MySqlCommand comando = new MySqlCommand("buscarVuelo", conex.getConexion());
                comando.CommandType = CommandType.StoredProcedure;
                //comando.CommandText = "buscarVuelo";
                
                //comando.Connection.Open();

                comando.Parameters.AddWithValue("@fechas", fechaSa);
                //comando.Parameters.AddWithValue("@fechal", fechaRe);
                comando.Parameters.AddWithValue("@lugars", origen);
                comando.Parameters.AddWithValue("@lugarl", destino);
                comando.Parameters["@fechas"].Direction = ParameterDirection.Input;
               // comando.Parameters["@fechal"].Direction = ParameterDirection.Input;
                comando.Parameters["@lugars"].Direction = ParameterDirection.Input;
                comando.Parameters["@lugarl"].Direction = ParameterDirection.Input;
                MySqlDataReader reader = comando.ExecuteReader();
                List<Vuelo> misVuelos = new List<Vuelo>();
                while (reader.Read())
                {
                    Vuelo unVuelo = new Vuelo();
                    unVuelo.NumeroVuelo = reader.GetString(0);
                    unVuelo.FechaSalida = reader.GetDateTime(1);
                   // unVuelo.FechaLlegada = reader.GetDateTime(2);


                    misVuelos.Add(unVuelo);
                }
                conex.cerrarConexion();
                return misVuelos;
            }
        }
        // metodo para buscar un vuelo si selecciono fecha de saliday fecha llegada
        public List<Vuelo> MostrarVueloVuelta(string fechaS, string fechaL, int origen, int destino)
        {

            {
                DateTime fechaSa = Convert.ToDateTime(fechaS);
                DateTime fechaRe = Convert.ToDateTime(fechaL);

                // instancio un objeto conexion y otro Sqlcommand para la BD
                ConexionMySQL conex = new ConexionMySQL();
                conex.abrirConexion();
                MySqlCommand comando = new MySqlCommand("buscarVueloVuelta", conex.getConexion());
                comando.CommandType = CommandType.StoredProcedure;
                //comando.CommandText = "buscarVuelo";

                //comando.Connection.Open();

                comando.Parameters.AddWithValue("@fechas", fechaSa);
                comando.Parameters.AddWithValue("@fechal", fechaRe);
                comando.Parameters.AddWithValue("@lugars", origen);
                comando.Parameters.AddWithValue("@lugarl", destino);
                comando.Parameters["@fechas"].Direction = ParameterDirection.Input;
                comando.Parameters["@fechal"].Direction = ParameterDirection.Input;
                comando.Parameters["@lugars"].Direction = ParameterDirection.Input;
                comando.Parameters["@lugarl"].Direction = ParameterDirection.Input;
                MySqlDataReader reader = comando.ExecuteReader();
                List<Vuelo> misVuelos = new List<Vuelo>();
                while (reader.Read())
                {
                    Vuelo unVuelo = new Vuelo();
                    unVuelo.NumeroVuelo = reader.GetString(0);
                    unVuelo.FechaSalida = reader.GetDateTime(1);
                    unVuelo.FechaLlegada = reader.GetDateTime(2);


                    misVuelos.Add(unVuelo);
                }
                conex.cerrarConexion();
                return misVuelos;
            }
        }
            //buscar un lugar

              public int buscarIdLugar (string nombreLugar)
              {
                  int idLugar= 0;
                   ConexionMySQL conex = new ConexionMySQL();
                   conex.abrirConexion();
                   MySqlCommand comando = new MySqlCommand("buscarIdLugar", conex.getConexion());
                comando.CommandType = CommandType.StoredProcedure;
               // comando.CommandText = "buscarIdLugar";
                
                //comando.Connection.Open();

                 comando.Parameters.AddWithValue("@nombreLugar", nombreLugar);
                  comando.Parameters["@nombreLugar"].Direction=ParameterDirection.Input;
                   MySqlDataReader reader = comando.ExecuteReader();
                   if (reader.Read())
                   
                        idLugar = Convert.ToInt16(reader.GetValue(0));
                   
                  return idLugar;
              }
        //mostarar un vuelo unico cuando lo escoje en el gridview
              public Vuelo MostrarVueloXId(int idvuelo)
              {

                  
                       Vuelo unVuelo = new Vuelo();

                      // instancio un objeto conexion y otro Sqlcommand para la BD
                      ConexionMySQL conex = new ConexionMySQL();
                      conex.abrirConexion();
                      MySqlCommand comando = new MySqlCommand("buscarUnVueloXID", conex.getConexion());
                      comando.CommandType = CommandType.StoredProcedure;
                      //comando.CommandText = "buscarVuelo";

                      //comando.Connection.Open();

                      comando.Parameters.AddWithValue("@Vueloid", idvuelo);

                      comando.Parameters["@Vueloid"].Direction = ParameterDirection.Input;
                      
                      MySqlDataReader reader = comando.ExecuteReader();
                      
                      if (reader.Read())
                      {
                         
                          unVuelo.NumeroVuelo = reader.GetString(0);
                          unVuelo.FechaSalida = reader.GetDateTime(1);
                          unVuelo.FechaLlegada = reader.GetDateTime(2);
                          unVuelo.HoraSalida = reader.GetString(3);
                          unVuelo.HoraLlegada = reader.GetString(4);


                       }
                      conex.cerrarConexion();

                      return unVuelo;
                  
              }

        //metodo para buscar los datos que faltan del vuelo de vuelta
              public Vuelo MostrarDatosVueloVuelta(string fechaL, int origen, int destino)
              {
                  DateTime fechaRe = Convert.ToDateTime(fechaL);

                  Vuelo unVuelo = new Vuelo();

                  // instancio un objeto conexion y otro Sqlcommand para la BD
                  ConexionMySQL conex = new ConexionMySQL();
                  conex.abrirConexion();
                  MySqlCommand comando = new MySqlCommand("vuelta", conex.getConexion());
                  comando.CommandType = CommandType.StoredProcedure;
                  //comando.CommandText = "buscarVuelo";

                  //comando.Connection.Open();

                  comando.Parameters.AddWithValue("@fechaL",fechaRe );
                  comando.Parameters.AddWithValue("@lugarS", origen);
                  comando.Parameters.AddWithValue("@lugarL", destino);
                  comando.Parameters["@fechaL"].Direction = ParameterDirection.Input;
                  comando.Parameters["@lugarS"].Direction = ParameterDirection.Input;
                  comando.Parameters["@lugarL"].Direction = ParameterDirection.Input;

                  MySqlDataReader reader = comando.ExecuteReader();

                  if (reader.Read())
                  {

                      unVuelo.NumeroVuelo = reader.GetString(0);
                      unVuelo.FechaSalida = reader.GetDateTime(1);            
                      unVuelo.HoraSalida = reader.GetString(2);
                      unVuelo.HoraLlegada = reader.GetString(3);


                  }
                  conex.cerrarConexion();

                  return unVuelo;

              }
        //mostrar le tarifa del vuelo seleccionado
              public Tarifa MustrarTarifaXIdVuelo(int idvuelo)
              {


                  Tarifa laTarifa = new Tarifa();

                  // instancio un objeto conexion y otro Sqlcommand para la BD
                  ConexionMySQL conex = new ConexionMySQL();
                  conex.abrirConexion();
                  MySqlCommand comando = new MySqlCommand("buscarTarifaXIdVuelo", conex.getConexion());
                  comando.CommandType = CommandType.StoredProcedure;
                  //comando.CommandText = "buscarVuelo";

                  //comando.Connection.Open();

                  comando.Parameters.AddWithValue("@Vueloid", idvuelo);

                  comando.Parameters["@Vueloid"].Direction = ParameterDirection.Input;

                  MySqlDataReader reader = comando.ExecuteReader();

                  if (reader.Read())
                  {
                      laTarifa.Descripcion = reader.GetString(0);
                      laTarifa.TipoTarifa = reader.GetString(1);
                      laTarifa.Precio = reader.GetDouble(2);


                  }
                  conex.cerrarConexion();

                  return laTarifa;

              }
        #endregion
        }
}

